Bibliothèque de modèles de régression

Dernière mise à jour : 20 Septembre 1999


  1. L'unité MODELS

    1. Présentation générale
    2. Procédures principales
    3. Autres procédures
    4. Ajout d'un modèle de régression

      1. Définition d'une unité spécifique
      2. Intégration dans la bibliothèque

    5. Ajout d'un modèle de variance

  2. Programmes de démonstration

    1. Programmes REGPOLY, REGEXPO et REGFRAC
    2. Programme REGMULT
    3. Programme NIST

  3. Exemples d'utilisation

    1. Calcul d'une courbe d'étalonnage
    2. pH d'une solution tampon
    3. Relation structure-activité
    4. Concentration d'un médicament en fonction du temps
    5. Activité d'une enzyme en fonction de la concentration du substrat

I. L'unité MODELS


I.A. Présentation générale

Nous présentons dans ce chapitre l'unité MODELS, contenue dans le sous-répertoire REG de l'archive TPMATH1.ZIP. Cette unité a pour buts :

Chaque modèle de régression est défini dans une unité spécifique ayant un nom de la forme FIT*.PAS. D'une façon générale, vous n'aurez pas besoin d'accèder aux unités individuelles. Il suffit d'appeler directement les procédures de l'unité MODELS


I.B. Procédures principales

Les procédures les plus importantes de l'unité MODELS sont les suivantes :


procedure InitModel(Reg_Model, Var_Model : Integer;
                    CstPar               : PVector);

Cette procédure initialise les modèles de régression et de variance. Elle doit être appelée avant toutes les autres.


function WLSFit(X        : PVector;
                U        : PMatrix;
                Y        : PVector;
                N        : Integer;
                Init     : Boolean;
                MaxIter  : Integer;
                Tol      : Float;
                Theta, B : PVector;
                V        : PMatrix;
                Ycalc, S : PVector;
                var Test : TRegTest) : Integer;

Cette fonction ajuste le modèle par régression pondérée (WLS = Weighted Least Squares = Moindres carrés pondérés). La signification des paramètres est la suivante :

  En entrée
  --------------------------------------------------------------------
  X, U    = Vecteur ou matrice des variables indépendantes
  Y       = Vecteur de la variable dépendante
  N       = Nombre d'observations
  Init    = TRUE pour calculer les valeurs initiales des
              paramètres de la régression
            FALSE pour utiliser les valeurs courantes
  MaxIter = Nombre maximal d'itérations
              (si 0 les paramètres ne seront pas affinés)
  Tol     = Précision requise sur les paramètres
  Theta   = Paramètres de la variance

  En sortie
  --------------------------------------------------------------------
  Theta = Paramètres de la variance (les mêmes qu'en
            entrée, avec en plus la variance résiduelle
            stockée dans Theta^[0])
  B     = Paramètres de la régression
  V     = Matrice de variance-covariance des paramètres
  Ycalc = Valeurs estimées de Y
  S     = Ecart-types des Y
  Test  = Tests de la régression

Notes :

  1. Les paramètres X et U doivent toujours être déclarés, même si un seul est utilisé.
  2. Les paramètres Init, MaxIter et Tol ne sont utilisés que par les modèles non linéaires.
  3. Le vecteur Theta correspond aux paramètres notés e0, e1, e2,... dans la présentation de la procédure InitModel.
  4. Les algorithmes de calcul utilisés par défaut sont :

    Si l'on veut changer d'algorithme, il faut appeler la procédure SetRegAlgo ou SetOptAlgo avant la fonction WLSFit (voir cours sur la régression linéaire ou non linéaire).

La fonction retourne l'un des codes d'erreur suivants :

  --------------------------------------------------------------------
  Code            Valeur         Signification
  --------------------------------------------------------------------
  MAT_OK            0            Pas d'erreur
  MAT_SINGUL       -1            Matrice singulière
  BIG_LAMBDA       -2            Paramètre de Marquardt trop grand
  NON_CONV         -3            Non-convergence
  --------------------------------------------------------------------

I.C. Autres procédures

Les procédures suivantes sont également disponibles :


function FuncName : String;

Retourne le nom de la fonction de régression (ex. 'y = a + b.x').


function FirstParam : Integer;

Retourne l'indice du premier paramètre de la régression (en général 0 ou 1).


function LastParam : Integer;

Retourne l'indice du dernier paramètre de la régression.


function ParamName(I : Integer) : String;

Retourne le nom du paramètre d'indice I.


function RegFunc(X : Float; B : PVector) : Float;

Calcule la fonction de régression dans le cas d'une variable indépendante.


function RegFuncNVar(X, B : PVector) : Float;

Calcule la fonction de régression dans le cas de plusieurs variables indépendantes.


procedure DerivProc(RegFunc : TRegFunc; X, Y : Float; B, D : PVector);

Calcule les dérivées partielles de la fonction de régression au point (X,Y) (pour la régression non linéaire uniquement). La dérivée par rapport au paramètre d'indice I est stockée dans D^[I].


function VarFuncName : String;

Retourne le nom de la fonction de variance (ex. 'v = e0.(1 + e1.y)').


function LastVarParam : Integer;

Retourne l'indice du dernier paramètre de la variance.


function VarFunc(Y : Float; Theta : PVector) : Float;

Calcule la variance d'une observation Y. Theta est le vecteur des paramètres de la variance.


I.D. Ajout d'un modèle de régression


I.D.1. Définition d'une unité spécifique

Pour ajouter un nouveau modèle de régression non linéaire dans la bibliothèque, il faut tout d'abord écrire une unité spécifique. Le plus simple est de modifier une unité existante :

Dans tous les cas, vous devez adapter les procédures et fonctions suivantes :

  FuncName
  FirstParam
  LastParam
  ParamName
  RegFunc
  DerivProc
  FitModel

Notes :

  1. La fonction RegFunc doit être remplacée par RegFuncNVar si le modèle de régression comporte plusieurs variables indépendantes (exemple dans FITMULT.PAS)
  2. La procédure DerivProc est conseillée mais non indispensable. En son absence, les dérivées seront estimées numériquement.
  3. Il est conseillé de ne pas modifier les noms des procédures, ni la liste de leurs paramètres formels, sous peine d'avoir à faire des modifications correspondantes dans MODELS.PAS. Si des paramètres supplémentaires sont nécessaires pour définir le modèle, ils doivent être considérés comme des paramètres constants.

Si le modèle comporte des paramètres constants, il faut :

  1. Définir, dans la partie implementation de l'unité, une série de variables globales correspondant aux paramètres constants (voir p. ex. les variables Deg1, Deg2 et ConsTerm de l'unité FITFRAC.PAS).
  2. Ajouter une procédure InitModel qui définira la correspondance entre ces variables globales et les éléments du vecteur CstPar.

I.D.2. Intégration dans la bibliothèque

Afin d'intégrer le nouveau modèle dans la bibliothèque, vous devez faire les modifications suivantes dans MODELS.PAS :

  1. Mettre à jour la constante MAXMODEL
  2. Ajouter un identificateur pour votre modèle (const REG_*)
  3. Ajouter le nom du modèle dans le tableau MODELNAME
  4. Ajouter une référence à votre modèle dans chacune des procédures FuncName, FirstParam, LastParam, ParamName, RegFunc (ou RegFuncNVar), FitModel, et éventuellement DerivProc et InitModel. Chaque référence est de la forme :

        <Identificateur_modèle> :
        <Nom_procédure> := <Nom_unité_spécifique>.<Nom_procédure>;
    
        Exemple :
    
        REG_LIN : FuncName := FitLin.FuncName;
        


I.E. Ajout d'un modèle de variance

Pour ajouter un modèle de variance, il faut faire les modifications suivantes dans MODELS.PAS :

  1. Mettre à jour la constante MAXVARMODEL
  2. Ajouter un identificateur pour votre modèle (const VAR_*)
  3. Ajouter le nom du modèle dans le tableau VARMODELNAME
  4. Mettre à jour les fonctions VarFuncName, FuncName et LastVarParam

II. Programmes de démonstration

Les programmes suivants sont disponibles dans le sous-répertoire REG de l'archive TPMATH2.ZIP :


II.A. Programmes REGPOLY, REGEXPO et REGFRAC

Ces programmes utilisent des procédures situées dans 3 fichiers à inclure :

L'essentiel des appels à la librairie MODELS se fait dans le programme principal :

  { Initialisation des modèles de régression et de variance.
    Exemple de la régression multi-exponentielle }

  InitModel(REG_EXPO,
            VAR_CONST,  { Ici nous utilisons une variance constante }
            CstPar);

  { Dimensionnement des tableaux (appel aux fonctions LastParam et
    LastVarParam de la librairie MODELS). Note: Les paramètres de la
    variance, Theta^[1] à Theta^[LastVarParam], devraient être fournis
    si nous utilisions un modèle de variance non constante }

  DimVector(Theta, LastVarParam);
  DimVector(B, LastParam);
  DimMatrix(V, LastParam, LastParam);
  DimVector(Ycalc, N);
  DimVector(S, N);

  { Calcul de la régression. Les paramètres MAXITER et TOL sont ici des
    constantes définies dans le programme principal. Pour la régression
    linéaire ou polynômiale ils sont remplacés par des valeurs arbitraires }

  ErrCode := WLSFit(X, U, Y, N, True, MAXITER, TOL,
                    Theta, B, V, Ycalc, S, RegTest);

Les principales fonctions et procédures définies dans ces programmes sont les suivantes :


procedure ReadCmdLine(var InFName : String; var CstPar : PVector);

Cette procédure lit les paramètres passés sur la ligne de commande. Ces paramètres sont :

  1. Le nom du fichier d'entrée (extension .DAT par défaut).
  2. Le degré du polynôme (pour REGPOLY), le nombre d'exponentielles (pour REGEXPO), ou bien les degrés du numérateur et du dénominateur (pour REGFRAC). Tous ces paramètres ont par défaut des valeurs égales à 1.
  3. Un paramètre valant 1 si la fonction inclut un terme constant Ymin (pour REGEXPO) ou p0 (pour REGFRAC) .

Le nom du fichier d'entrée est retourné dans InFName. Les autres paramètres sont stockés dans le vecteur CstPar, qui est dimensionné par la procédure.


function ReadInputFile(InFName                 : String;
                       var Title, XName, YName : String;
                       var N                   : Integer;
                       var X, Y                : PVector) : Integer;

Cette fonction (définie dans REG_IN.INC) lit le fichier de données. C'est un fichier ASCII dont la structure est la suivante :

Les fichiers suivants sont des exemples de fichiers de données :

Après lecture du nombre d'observations (N), les vecteurs X et Y sont dimensionnés à l'intérieur de la fonction.


procedure WriteOutputFile(InFName, Title, XName, YName : String;
                          N                            : Integer;
                          Y, Ycalc, S, B               : PVector;
                          V                            : PMatrix;
                          Test                         : TRegTest);

Cette procédure (définie dans REG_OUT.INC) écrit les résultats dans un fichier de sortie. Le nom de ce dernier correspond à celui du fichier d'entrée, avec l'extension .OUT


function PlotRegFunc(X : Float) : Float;

Cette fonction (définie dans REG_PLOT.INC) correspond à l'équation de la courbe à tracer. Bien qu'elle soit en fait identique à la fonction RegFunc de l'unité MODELS, elle doit faire l'objet d'une déclaration indépendante car elle n'admet qu'un seul paramètre X qui représente l'abscisse du point à tracer. Les autres paramètres (ici le vecteur B) sont déclarés comme variables globales. Avec un compilateur 16 bits, la fonction doit être compilée en mode FAR ($F+).

  {$F+}
  function PlotRegFunc(X : Float) : Float;
  begin
    PlotRegFunc := RegFunc(X, B);
  end;
  {$F-}

procedure PlotGraph(Title : String;
                    X, Y  : PVector;
                    N     : Integer);

Cette procédure (également définie dans REG_PLOT.INC) trace les points expérimentaux et la courbe calculée. Elle utilise plusieurs fonctions et procédures de l'unité PLOT.PAS.


II.B. Programme REGMULT

Ce programme de régression linéaire multiple suit les mêmes règles que les programmes précédents, avec quelques différences :


II.C. Programme NIST

Le NIST propose plusieurs séries de données pour tester les programmes de régression. Les résultats ont été calculés avec un logiciel travaillant en multi-précision. Ils concernent les paramètres de régression, leurs écart-types, et les valeurs de s et (pour les modèles linéaires) de r2 et F. Nous avons utilisé les séries de données suivantes :

Les données sont rassemblées dans un fichier NIST.DAT. Le programme ajuste chaque modèle, trace le graphique et écrit les résultats dans un fichier NIST.OUT

Sous BP7 avec l'option de compilation EXTENDEDREAL (type Extended) nous avons obtenu les résultats suivants pour la précision des paramètres de la régression. La précision est définie par -log(|Erreur relative max.|). Elle correspond approximativement au nombre de chiffres significatifs trouvés par le programme.

Precision des parametres

Figure 1 : Précision des paramètres de la régression pour les données du NIST.

N = Norris, L = Longley, P = Pontius, W1-5 = Wampler 1 à 5, F = Filippelli, K = Kirby 2, T = Thurber, H = Hahn 1, M = MGH 17, La1-3 = Lanczos 1 à 3, B = Box BOD, Mi = Misra 1a, DW = Daniel-Wood, R = Ratkowsky 2

Notes :

  1. Pour la régression linéaire et polynômiale, les meilleurs résultats sont obtenus avec l'algorithme de décomposition en valeurs singulières.
  2. Pour la série "Filippelli", seule l'utilisation du type Extended donne des résultats acceptables.
  3. Pour les modèles non linéaires, l'algorithme de Marquardt donne les meilleurs résultats, sauf pour la série "Hahn 1" pour laqualle il faut faire une première estimation des paramètres par la méthode du simplexe ou le recuit simulé, avant de les affiner par la méthode de Marquardt.

III. Exemples d'utilisation

Nous présentons ici quelques exemples empruntés au domaine de la Chimie.


III.A. Calcul d'une courbe d'étalonnage

Le fichier LINE.DAT contient les résultats relatifs à l'étalonnage d'une technique d'analyse (réponse du détecteur en fonction de la concentration du produit à doser).

Essayons tout d'abord de représenter les résultats par une droite :

REGPOLY LINE

On obtient le fichier de sortie suivant (Fichier LINE.OUT) :

=========================================================================
Data file  : line.DAT
Study name : Linear regression
x variable : X
y variable : Y
Function   : y = b0 + b1.x
-------------------------------------------------------------------------
Parameter    Est.value         Std.dev.        t Student       Prob(>|t|)
-------------------------------------------------------------------------
   b0           0.1847           0.0488             3.79           0.0323
   b1           0.2901           0.0184            15.78           0.0006
-------------------------------------------------------------------------
Number of observations            : n   =     5
Residual error                    : s   =     0.0465
Coefficient of determination      : r2  =     0.9881
Adjusted coeff. of determination  : r2a =     0.9841
Variance ratio (explained/resid.) : F   =   248.8662    Prob(>F) = 0.0006
-------------------------------------------------------------------------
  i        Y obs.       Y calc.      Residual      Std.dev.      Std.res.
-------------------------------------------------------------------------
  1        0.3770        0.4168       -0.0398        0.0465       -0.8554
  2        0.6800        0.6489        0.0311        0.0465        0.6684
  3        0.8930        0.8810        0.0120        0.0465        0.2579
  4        1.1550        1.1131        0.0419        0.0465        0.9006
  5        1.3000        1.3452       -0.0452        0.0465       -0.9715
=========================================================================

On constate que :

  1. Les valeurs de r2, r2a et F paraissent tout-à-fait acceptables.
  2. L'ordonnée à l'origine (b0) diffère significativement de zéro, (p < 0.05) ce qui paraît peu vraisemblable pour une technique d'analyse (une concentration nulle devant donner une réponse nulle).
  3. L'écart-type résiduel, égal à 0.0465, constitue une estimation de l'erreur de mesure. Il correspond à une précision variant de 3.6% (pour le dernier point) à 12% (pour le premier point). En l'absence d'autres informations concernant la technique, cette précision paraît insuffisante.
  4. Les résidus normalisés (Std.res. = Standardized residuals) ont des valeurs absolues inférieures à 1, ce qui montre l'absence de point aberrant. Toutefois, les signes des résidus normalisés sont négatifs pour les points extrêmes et positifs pour les points intermédiaires, ce qui n'est pas en faveur d'une répartition aléatoire. Ceci est confirmé par l'examen de la courbe (Figure 3) qui montre un léger écart à la linéarité.

On est donc conduit à faire un essai avec un polynôme du second degré :

REGPOLY LINE 2

On obtient alors le fichier de sortie suivant :

=========================================================================
Data file  : line.DAT
Study name : Linear regression
x variable : X
y variable : Y
Function   : y = b0 + b1.x + b2.x^2
-------------------------------------------------------------------------
Parameter    Est.value         Std.dev.        t Student       Prob(>|t|)
-------------------------------------------------------------------------
   b0           0.0512           0.0568             0.90           0.4624
   b1           0.4332           0.0541             8.01           0.0152
   b2          -0.0298           0.0111            -2.70           0.1145
-------------------------------------------------------------------------
Number of observations            : n   =     5
Residual error                    : s   =     0.0265
Coefficient of determination      : r2  =     0.9974
Adjusted coeff. of determination  : r2a =     0.9949
Variance ratio (explained/resid.) : F   =   387.9192    Prob(>F) = 0.0026
-------------------------------------------------------------------------
  i        Y obs.       Y calc.      Residual      Std.dev.      Std.res.
-------------------------------------------------------------------------
  1        0.3770        0.3787       -0.0017        0.0265       -0.0626
  2        0.6800        0.6680        0.0120        0.0265        0.4543
  3        0.8930        0.9191       -0.0261        0.0265       -0.9875
  4        1.1550        1.1322        0.0228        0.0265        0.8623
  5        1.3000        1.3071       -0.0071        0.0265       -0.2666
=========================================================================

On constate :

  1. Une réduction de l'écart-type résiduel, qui passe à 0.0265, ce qui donne une précision de 2% à 7%, donc tout-à-fait acceptable.
  2. Une augmentation de r2a et F qui montre que le polynôme du second degré est préférable à la droite (l'augmentation de r2 est sans intérêt car elle traduit simplement l'augmentation du nombre de paramètres).
  3. Le terme constant b0 ne diffère plus significativement de zéro, donc on peut admettre que la courbe passe par l'origine.

Le graphique (Figure 2) confirme que le polynôme s'ajuste mieux aux points expérimentaux.


Courbes d'etalonnage

Figure 2 : Courbes d'étalonnage


On vérifierait que l'utilisation d'un polynôme du troisième degré n'apporte aucune amélioration mais au contraire fait diminuer r2a et F.


III.B. pH d'une solution tampon

Les données du fichier POLYNOM.DAT représentent la variation du pH d'une solution tampon contenant un solvant organique, en fonction de la concentration de ce dernier.

On montrerait comme dans l'exemple précédent que le meilleur ajustement est obtenu avec un polynôme du cinquième degré :

REGPOLY POLYNOM 5

Les résultats sont les suivants :

=========================================================================
Data file  : polynom.DAT
Study name : Polynomial regression
x variable : X
y variable : Y
Function   : y = b0 + b1.x + b2.x^2 + b3.x^3 + b4.x^4 + b5.x^5
-------------------------------------------------------------------------
Parameter    Est.value         Std.dev.        t Student       Prob(>|t|)
-------------------------------------------------------------------------
   b0           3.9626           0.0081           486.61           0.0000
   b1           5.5081           0.6394             8.61           0.0001
   b2          37.1571          14.8013             2.51           0.0459
   b3        -355.0261         132.7627            -2.67           0.0368
   b4        1089.7105         497.7389             2.19           0.0711
   b5       -1173.8032         655.5657            -1.79           0.1236
-------------------------------------------------------------------------
Number of observations            : n   =    12
Residual error                    : s   =     0.0090
Coefficient of determination      : r2  =     0.9998
Adjusted coeff. of determination  : r2a =     0.9997
Variance ratio (explained/resid.) : F   =  6829.6214    Prob(>F) = 0.0000
-------------------------------------------------------------------------
  i        Y obs.       Y calc.      Residual      Std.dev.      Std.res.
-------------------------------------------------------------------------
  1        3.9700        3.9626        0.0074        0.0090        0.8260
  2        4.0300        4.0435       -0.0135        0.0090       -1.5082
  3        4.1000        4.1049       -0.0049        0.0090       -0.5482
  4        4.2000        4.1886        0.0114        0.0090        1.2666
  5        4.2800        4.2788        0.0012        0.0090        0.1321
  6        4.4700        4.4666        0.0034        0.0090        0.3761
  7        4.6600        4.6671       -0.0071        0.0090       -0.7890
  8        4.8300        4.8309       -0.0009        0.0090       -0.0970
  9        4.9900        4.9851        0.0049        0.0090        0.5500
 10        5.1200        5.1219       -0.0019        0.0090       -0.2108
 11        5.2500        5.2501       -0.0001        0.0090       -0.0091
 12        5.3700        5.3699        0.0001        0.0090        0.0115
=========================================================================

On constate que :

  1. La précision de la mesure du pH, estimée, par l'écart-type résiduel, est d'environ 0.01, ce qui est vraisemblable.
  2. Les valeurs de r2, r2a et F sont très satisfaisantes.
  3. Les résidus normalisés sont pratiquement tous inférieurs à 1.5 en valeur absolue et leur répartition semble aléatoire.

La figure suivante montre la courbe obtenue :


pH d'une solution tampon

Figure 3 : pH de solutions tampons



III.C. Relation structure-activité

Les données du fichier INHIB.DAT représentent l'activité d'une série d'inhibiteurs enzymatiques (exprimée par la constante d'inhibition, pKi) en fonction de quelques caractéristiques structurales des molécules :

Nous allons traiter ces données par régression linéaire multiple avec présence d'un terme constant :

REGMULT INHIB 1

Les résultats sont les suivants :

=========================================================================
Data file  : INHIB.DAT
Study name : Inhib. AChE
x1         : E_LUMO
x2         : V
x3         : ICH2
x4         : ICS
y          : pKi
Function   : y = b0 + b1.x1 + b2.x2 + b3.x3 + b4.x4
-------------------------------------------------------------------------
Parameter    Est.value         Std.dev.        t Student       Prob(>|t|)
-------------------------------------------------------------------------
   b0           1.1268           0.6117             1.84           0.0820
   b1          -0.4412           0.1239            -3.56           0.0022
   b2           0.3136           0.0774             4.05           0.0007
   b3           0.3872           0.1568             2.47           0.0238
   b4           1.2070           0.1767             6.83           0.0000
-------------------------------------------------------------------------
Number of observations            : n   =    23
Residual error                    : s   =     0.2294
Coefficient of determination      : r2  =     0.8265
Adjusted coeff. of determination  : r2a =     0.7879
Variance ratio (explained/resid.) : F   =    21.4340    Prob(>F) = 0.0000
-------------------------------------------------------------------------
  i        Y obs.       Y calc.      Residual      Std.dev.      Std.res.
-------------------------------------------------------------------------
  1        3.2100        3.5437       -0.3337        0.2294       -1.4545
  2        3.9400        3.6901        0.2499        0.2294        1.0889
  3        3.6600        3.7880       -0.1280        0.2294       -0.5577
  4        3.9900        3.8715        0.1185        0.2294        0.5167
  5        4.0600        3.9881        0.0719        0.2294        0.3133
  6        4.0900        4.2140       -0.1240        0.2294       -0.5405
  7        3.3600        3.4468       -0.0868        0.2294       -0.3782
  8        3.9200        3.7725        0.1475        0.2294        0.6427
  9        3.5800        3.5991       -0.0191        0.2294       -0.0830
 10        4.2600        4.2276        0.0324        0.2294        0.1413
 11        3.0600        3.6305       -0.5705        0.2294       -2.4866
 12        4.1300        4.0312        0.0988        0.2294        0.4305
 13        4.2700        4.2552        0.0148        0.2294        0.0645
 14        4.3600        4.0316        0.3284        0.2294        1.4314
 15        3.7200        3.4453        0.2747        0.2294        1.1974
 16        3.8900        3.9531       -0.0631        0.2294       -0.2750
 17        4.3900        4.3067        0.0833        0.2294        0.3632
 18        3.9200        4.1756       -0.2556        0.2294       -1.1138
 19        3.8900        3.9102       -0.0202        0.2294       -0.0882
 20        5.1000        5.0705        0.0295        0.2294        0.1286
 21        5.1400        5.1695       -0.0295        0.2294       -0.1286
 22        3.6800        3.7879       -0.1079        0.2294       -0.4702
 23        3.7000        3.4114        0.2886        0.2294        1.2580
=========================================================================

On constate que :

  1. La valeur de pKi variant de 3.06 à 5.14, l'écart-type résiduel de 0.22 correspond à une précision de 4.5% à 7.5%, ce qui est acceptable.
  2. La valeur de r2 montre que les variables indépendantes considérées expliquent 83% des variations de pKi. Les valeurs de r2a et F, bien qu'un peu faibles, paraissent acceptables.
  3. La répartition des résidus normalisés semble aléatoire.

III.D. Concentration d'un médicament en fonction du temps

Les données proviennent de l'ouvrage de Gibaldi et Perrier (Pharmacokinetics, 2nd edition, Dekker 1982). Nous utiliserons comme exemple le fichier ORAL2.DAT (administration orale).

On montrerait, au moyen des graphiques et des critères r2a et F, que le meilleur ajustement est obtenu avec un modèle à 3 exponentielles sans terme constant.

On lance donc le programme par :

REGEXPO ORAL2 3

On obtient le fichier de sortie suivant (Fichier ORAL2.OUT) :

=========================================================================
Data file  : ORAL2.DAT
Study name : Oral - 2 comp.
x variable : Time
y variable : Concentration
Function   : y = A1.exp(-a1.x) + A2.exp(-a2.x) + A3.exp(-a3.x)
-------------------------------------------------------------------------
Parameter    Est.value         Std.dev.        t Student       Prob(>|t|)
-------------------------------------------------------------------------
 A1          -124.6229           0.9374          -132.94           0.0000
 a1             0.4793           0.0025           188.79           0.0000
 A2            89.4276           0.5411           165.28           0.0000
 a2             0.1197           0.0020            59.48           0.0000
 A3            35.1908           0.9746            36.11           0.0000
 a3             0.0298           0.0005            55.85           0.0000
-------------------------------------------------------------------------
Number of observations            : n   =    15
Residual error                    : s   =     0.0540
Coefficient of determination      : r2  =     1.0000
Adjusted coeff. of determination  : r2a =     1.0000
Variance ratio (explained/resid.) : F   = 456548.8555    Prob(>F) = 0.0000
-------------------------------------------------------------------------
  i        Y obs.       Y calc.      Residual      Std.dev.      Std.res.
-------------------------------------------------------------------------
  1        4.7000        4.6581        0.0419        0.0540        0.7758
  2       13.2000       13.2163       -0.0163        0.0540       -0.3021
  3       20.8000       20.8328       -0.0328        0.0540       -0.6071
  4       36.3000       36.3213       -0.0213        0.0540       -0.3944
  5       61.4000       61.3500        0.0500        0.0540        0.9260
  6       68.1000       68.1102       -0.0102        0.0540       -0.1886
  7       61.1000       61.1414       -0.0414        0.0540       -0.7675
  8       52.1000       52.0859        0.0141        0.0540        0.2612
  9       37.3000       37.2415        0.0585        0.0540        1.0840
 10       27.5000       27.5250       -0.0250        0.0540       -0.4631
 11       21.1000       21.1741       -0.0741        0.0540       -1.3732
 12       16.9000       16.8431        0.0569        0.0540        1.0548
 13       11.4000       11.4152       -0.0152        0.0540       -0.2810
 14        8.2000        8.1437        0.0563        0.0540        1.0433
 15        5.9000        5.9444       -0.0444        0.0540       -0.8231
=========================================================================

On constate que :

  1. r2 et r2a sont pratiquement égaux à 1 et F a une valeur très élevée, ce qui témoigne d'un excellent ajustement de la fonction aux points expérimentaux.
  2. L'écart-type résiduel est estimé à 0.054. Ceci correspond à un coefficient de variation compris entre 0.08% (pour y = 68.1) et 1.15% (pour y = 4.7), ce qui témoigne d'une excellente précision de la technique d'analyse.
  3. Les résidus normalisés (Std.res. = Standardized residuals) ont tous des valeurs absolues inférieures à 1.4 (pas de point aberrant), et leur répartition semble aléatoire.
  4. Chaque paramètre diffère significativement de zéro (p < 10-4).

La courbe confirme l'excellent ajustement obtenu.


Concentration d'un medicament

Figure 4 : Concentration d'un médicament en fonction du temps



III.E. Activité d'une enzyme en fonction de la concentration du substrat

Nous utiliserons les données du fichier ENZYME.DAT qui représentent la vitesse initiale (v0) d'une réaction enzymatique en fonction de la concentration initiale (s0) du substrat. Ce type de relation est habituellement modélisé par des fractions rationnelles.

On montrerait, au moyen des graphiques et des critères r2a et F, que le meilleur ajustement est obtenu avec un numérateur et un dénominateur de degré 2, sans terme constant au numérateur.

On lance donc le programme par :

REGFRAC ENZYME 2 2

Les résultats sont les suivants :

=========================================================================
Data file  : ENZYME.DAT
Study name : Enzyme kinetics
x variable : s0
y variable : v0
Function   : y = (p1.x + p2.x^2) / (1 + q1.x + q2.x^2)
-------------------------------------------------------------------------
Parameter    Est.value         Std.dev.        t Student       Prob(>|t|)
-------------------------------------------------------------------------
   p1           0.6874           0.0904             7.61           0.0000
   p2           0.2157           0.1212             1.78           0.1056
   q1           4.1815           0.9754             4.29           0.0016
   q2           0.7370           0.4254             1.73           0.1139
-------------------------------------------------------------------------
Number of observations            : n   =    14
Residual error                    : s   =     0.0055
Coefficient of determination      : r2  =     0.9878
Adjusted coeff. of determination  : r2a =     0.9842
Variance ratio (explained/resid.) : F   =   724.8827    Prob(>F) = 0.0000
-------------------------------------------------------------------------
  i        Y obs.       Y calc.      Residual      Std.dev.      Std.res.
-------------------------------------------------------------------------
  1        0.0531        0.0582       -0.0051        0.0055       -0.9199
  2        0.0907        0.0886        0.0021        0.0055        0.3754
  3        0.1250        0.1214        0.0036        0.0055        0.6460
  4        0.1560        0.1526        0.0034        0.0055        0.6141
  5        0.1690        0.1698       -0.0008        0.0055       -0.1451
  6        0.1780        0.1818       -0.0038        0.0055       -0.6772
  7        0.1840        0.1909       -0.0069        0.0055       -1.2523
  8        0.2220        0.2189        0.0031        0.0055        0.5555
  9        0.2410        0.2342        0.0068        0.0055        1.2243
 10        0.2470        0.2441        0.0029        0.0055        0.5188
 11        0.2560        0.2636       -0.0076        0.0055       -1.3739
 12        0.2660        0.2719       -0.0059        0.0055       -1.0672
 13        0.2780        0.2765        0.0015        0.0055        0.2653
 14        0.2850        0.2795        0.0055        0.0055        0.9985
=========================================================================

On constate que :

  1. Les valeurs de r2, r2a et F sont tout-à-fait acceptables.
  2. L'écart-type résiduel est estimé à 0.0055. Ceci correspond à un coefficient de variation compris entre 1.9% (pour y = 0.285) et 10.4% (pour y = 0.0531). Cette précision, quoique faible, est compatible avec la précision habituelle des analyses enzymatiques.
  3. Les résidus normalisés (Std.res. = Standardized residuals) ont tous des valeurs absolues inférieures à 1.3 (pas de point aberrant), et leur répartition semble aléatoire.
  4. Les coefficients des termes du second degré (p2 et q2) ne sont significatifs qu'au risque 10%. Cependant la suppression de l'un d'entre eux fait diminuer les valeurs de r2a et F. Il semble donc préférable de les conserver, malgré leur faible précision. (Notons aussi que l'estimation de la précision de ces coefficients peut être erronée si leur distribution ne suit pas exactement la loi de Student).

La figure suivante montre la courbe obtenue :


Activite enzymatique

Figure 5 : Activité enzymatique en fonction de la concentration du substrat